package com.lishem.carl._02linkedlist;

import com.lishem.common.ListNode;

/**
 * https://leetcode.cn/problems/remove-linked-list-elements/description/
 * <p>
 * 给你一个链表的头节点 head 和一个整数 val ，请你删除链表中所有满足 Node.val == val 的节点，并返回 新的头节点。
 * <p>
 * 示例 1：
 * <p>
 * 输入：head = [1,2,6,3,4,5,6], val = 6
 * <p>
 * 输出：[1,2,3,4,5]
 * <p>
 * 示例 2：
 * <p>
 * 输入：head = [], val = 1
 * <p>
 * 输出：[]
 * <p>
 * 示例 3：
 * <p>
 * 输入：head = [7,7,7,7], val = 7
 * <p>
 * 输出：[]
 */
public class _1LetCode203_移除链表元素 {

    public ListNode removeElements(ListNode head, int val) {
        ListNode addHead = new ListNode();
        addHead.next = head;
        ListNode cur = head;
        ListNode pre = addHead;
        while (cur != null) {
            if (cur.val == val){
                pre.next = cur.next;
            }else {
                pre = cur;
            }
            cur = cur.next;
        }
        return addHead.next;
    }

}
